XSSINST.PRG V1.2 - Copyright (c) 1997-98 by Ulli Gruszka p Dieses Programm ist ein Bestandteil des BUBBLES-Archives! q p Gesonderte Verwendung nur mit schriftlicher Genehmigung des Autors! q =========================================================================== XSSINST.PRG installiert eine Schnittstelle zwischen Bildschirmschonern und Programmen, die unter Nichtbeachtung der Fenster-Rechtecklisten auf den Bildschirm ausgeben mssen (Zeit/Datum-Anzeige, Speicher-Info, Hilfe-Texte, Objekt-Info etc.). Der Bildschirmschoner BUBBLES benutzt die Schnittstelle zus„tzlich zur Kommunikation mit seinen Modulen. Ohne diese Schnittstelle ist das Modul- Schonen nicht m”glich. Zur Installation der Schnittstelle muž XSSINST.PRG im AUTO-Ordner gestartet werden. Bitte stellen Sie zun„chst sicher, daž die Schnittstelle nicht bereits von einem anderen Tool in einer Version kleiner als 1.01 installiert wurde. Wird XSSINST.PRG manuell erneut gestartet, so fhrt es einen Schnittstellen- Reset durch. =========================================================================== Hinweise fr Programmierer: =========================== XSSINST installiert die XSSI-Schnittstelle in der Version 0x101. Zun„chst wird geprft, ob die Schnittstelle bereits vorhanden ist. Ist dies der Fall und liegt die Schnittstelle in einer Version >= 1.01 vor, so terminiert XSSINST.PRG mit einem entsprechenden Hinweis. Ist die Schnittstelle in einer Version < 1.01 vorhanden, so wird die Installation mit einer Fehlermeldung abgebrochen. Existiert noch kein Cookie-Jar, so wird dieser erstmals mit Platz fr insgesamt 16 Cookies angelegt. Ist im Cookie-Jar kein Platz mehr fr einen weiteren Cookie, so wird globaler Speicher fr den bestehenden Jar und 16 weitere Cookies reserviert, der Jar dorthin kopiert und _p_cookies umgesetzt. Nun wird der XSSI-Cookie angelegt, dessen Wert ein Zeiger auf die folgende Struktur ist: typedef struct { LONG id; /* Analog zum Vorgehen beim XBRA-Verfahren die ID des Bildschirmschoners -> BBLS */ WORD version; /* Version des XSSI-Protokolls -> 0x101 */ WORD save_stat; /* Mitteilung, ob gerade geschont wird. 0=nein */ WORD prg_stat; /* Status des Programms: 0= normal schonen, 1= niemals schonen, -1= sofort schonen. */ LONG vec_stat; /* Bitfeld, in dem der Status der einzelnen berwachten Vektoren eingetragen ist. Ein gesetztes Bit bedeutet, Vektor aktiv, ein nicht gesetztes Bit, Vektor inaktiv. */ } INFOXSSI; Die Belegung von vec_stat: Bit-Nr. Vektor ======= ====== 0 Tastatur 1 Maus 2 Joystick (*) 3 Midi (*) 4 Modem-1 (*) 5 Modem-2 (SCC B) (*) 6 Serial-1 (*) 7 Serial-2 <-> LAN-Port (SCC A) (*) 8-14 sonstige Vektoren (*) 15 Fensterstapel (*) Bits werden von BUBBLES ignoriert Die Bits 0, 1 und 15 werden von BUBBLES nur w„hrend des Schonens ausgewertet. Module haben also die M”glichkeit, die ansonsten nicht konfigurierbaren Weck-Ereignisse (Tastatur, Maus und Žnderungen am Fenster-Stapel) tempor„r zu unterdrcken. Somit sind auch interaktive Module denkbar, die Benutzereingaben erwarten und auswerten. Untersttzung der Schnittstelle: ================================ Jedes Programm, das nicht ber die Fenster-Rechtecklisten auf den Bildschirm ausgibt, sollte nach dem Cookie suchen. Ist der Cookie vorhanden, so muž vor der Ausgabe in save_stat nachsehen werden, ob der Bildschirm gerade geschont wird (<>0). Ist dies der Fall, darf so lange keine Ausgabe stattfinden, bis save_stat wieder den Wert 0 enth„lt. Applikationen k”nnen Bildschirmschoner, die das Protokoll kennen, zum sofortigen Schonen auffordern, indem sie prg_stat den Wert -1 zuweisen. Ein denkbarer Anwendungsfall sind Druckausgaben und l„ngere Such- oder Sortieroperationen, deren Ablauf nicht am Bildschirm verfolgt werden muž. Setzt die Applikation prg_stat wieder auf 0 (darf auf keinen Fall vergessen werden!), so beendet der Schoner seine Aktivit„t. Im Zweifelsfall kann eine Schnittstellen-Reset durchgefhrt werden, indem XSSINST.PRG manuell gestartet wird.